var vm = new Vue({
    el: '#app',
    data: {}
});

$(function () {
    // 1.初始化Table
    var oTable = new TableInit();
    oTable.Init();

    // 2.初始化Button的点击事件
    var oButtonInit = new ButtonInit();
    oButtonInit.Init();
    $('#btn_query').click(function () {
        var role_name_search = $('#role_name_search').val();
        var options = $('#tb_departments').bootstrapTable('refresh');
    });

    /*layer.open({
         type: 1,
         title: vm.title,
         area: ['600px', '550px'],
         shadeClose: false,
         content: jQuery("#sysUserLayer"),
         btn: ['保存', '取消'],
         btn1: function (index) {
             saveOrUpdate(index);
         }
     });*/

    $('.remove').click(function () {
        var sitem = $('#tb_departments').bootstrapTable('getSelections');
        if (!sitem.length > 0) {
            layer.alert('请选中一条记录,再执行删除操作！', {
                icon: 2
            });
            return;
        } else {
            $modalConfirm('确定删除选中的' + sitem.length + '条记录?', function (status) {
                if (status) {
                    var ids = new Array();
                    for (var i = 0; i < sitem.length; i++) {
                        ids[i] = sitem[i].userid;
                    }
                    var param = {};
                    param["ids"] = ids;
                    $.ajax({
                        url: getApiRoot() + '/api/deleteUserByIds',
                        type: 'post',
                        dataType: 'jsonp',
                        cache: 'false',
                        async: false,
                        data: setFullParameter(param),
                        traditional: true,
                        success: function (data) {
                            if (data.code == "401") {
                                toLogin();
                            } else if (data.code == "200") {
                                $("#tb_departments").bootstrapTable('refresh');
                                $modal.modal('hide');
                                var icon = 'fa-check-circle';
                                var iconType = 1;
                                top.layer.msg('删除成功,共删除' + data.data + '条记录！', {
                                    icon: iconType,
                                    time: 4000,
                                    shift: 5
                                });
                                layer.close();
                            } else {
                                layer.alert(data.businessMsg.businessNote);
                            }
                        },
                        error: function () {
                            layer.alert('删除失败!');
                        }
                    })
                }
            });

        }

    });
});

var TableInit = function () {
    var oTableInit = new Object();
    // 初始化Table
    oTableInit.Init = function () {
        $('#tb_departments')
            .bootstrapTable(
                {
                    url: getApiRoot() + '/app/listAppStatus.action', // 请求后台的URL（*）
                    method: 'post', // 请求方式（*）
                    contentType: 'application/x-www-form-urlencoded',
                    toolbar: '#toolbar', // 工具按钮用哪个容器
                    striped: true, // 是否显示行间隔色
                    cache: false, // 是否使用缓存，默认为true，所以一般情况下需要设置一下这个属性（*）
                    pagination: false, // 是否显示分页（*）
                    sortable: false, // 是否启用排序
                    sortOrder: "asc", // 排序方式
                    queryParams: oTableInit.queryParams,// 传递参数（*）
                    sidePagination: "server", // 分页方式：client客户端分页，server服务端分页（*）
                    /*
                     * pageNumber:1, //初始化加载第一页，默认第一页 pageSize: 10,
                     * //每页的记录行数（*）
                     */
                    traditional: true,
                    offset: 1,
                    limit: 1000,
                    // pageList: [10, 25, 50, 100], // 可供选择的每页的行数（*）
                    search: false, // 是否显示表格搜索，此搜索是客户端搜索，不会进服务端，所以，个人感觉意义不大
                    strictSearch: true,
                    showColumns: true, // 是否显示所有的列
                    showRefresh: true, // 是否显示刷新按钮
                    minimumCountColumns: 2, // 最少允许的列数
                    clickToSelect: true, // 是否启用点击选中行
                    //height : 500, // 行高，如果没有设置height属性，表格自动根据记录条数觉得表格高度
                    uniqueId: "id", // 每一行的唯一标识，一般为主键列
                    showToggle: true, // 是否显示详细视图和列表视图的切换按钮
                    cardView: false, // 是否显示详细视图
                    detailView: false, // 是否显示父子表
                    columns: [
                        {
                            field: 'appInfoPK.app',
                            title: '项目'
                        },
                        {
                            field: 'appInfoPK.host',
                            title: '主机'
                        },
                        {
                            field: 'deploy',
                            title: '部署'
                        },
                        {
                            field: 'status',
                            title: '状态',
                            formatter: function (value, row, index) {
                                if (row.status == "running") {
                                    return ' <span class="label label-sm label-success"> running </span>';
                                } else if (row.status == "history") {
                                    return '<span class="label label-sm label-danger"> stoped </span>';
                                }
                            }

                        },
                        {
                            field: 'opt',
                            title: '操作',
                            events: 'actionEvents',
                            formatter: function (value, row, index) {
                                if (row.status != 'running') {
                                    return ['<a href="javascript:;" class="btn btn-icon-only red remove"> <i class="fa fa-trash-o"></i>删除</a>',]
                                        .join('');
                                }
                                return ' ';

                            }
                        }]
                });
    };

    // 得到查询的参数
    oTableInit.queryParams = function (params) {
        var temp = { // 这里的键的名字和控制器的变量名必须一直，这边改动，控制器也需要改成一样的
            limit: params.limit, // 页面大小
            offset: params.offset, // 页码
            name: $("#user_name_search").val(),
        };
        temp = setFullParameter(temp);
        return temp;
    };
    return oTableInit;
};

var ButtonInit = function () {
    var oInit = new Object();
    var postdata = {};

    oInit.Init = function () {
        // 初始化页面上面的按钮事件
    };
    return oInit;
};

window.actionEvents = {
    'click .update': function (e, value, row) {
        var userid = row.userid;
        if (userid == null || userid == "" || userid == undefined) {
            return;
        }
        vm.title = "修改";
        vm.type = 2;
        vm.user = row;
        $('#lbpwd').text('密码(不修改请放空)');
        vm.user.password = null;
        layer.open({
            type: 1,
            title: vm.title,
            area: ['600px', '550px'],
            shadeClose: false,
            content: jQuery("#sysUserLayer"),
            btn: ['保存', '取消'],
            btn1: function (index) {
                saveOrUpdate(index);
            }
        });
    },
    'click .remove': function (e, value, row) {
        $modalConfirm('确定删除:' + row.appInfoPK.app + '?', function (status) {
            if (status) {
                $.ajax({
                    url: getApiRoot() + '/app/delHisApp',
                    type: 'post',
                    cache: 'false',
                    async: false,
                    data: {app: row.appInfoPK.app, host: row.appInfoPK.host},
                    success: function (data) {
                        if (data.code == "401") {
                            toLogin();
                        }
                        else if (data.code == "0" || data.code == "200") {
                            $("#tb_departments").bootstrapTable('refresh');
                            top.layer.msg('删除成功', {
                                icon: 1,
                                time: 4000,
                                shift: 5
                            });
                        } else {
                            top.layer.alert(data.msg, {
                                icon: 2
                            });
                        }
                    },
                    error: function (e) {
                        top.layer.alert('删除失败，' + e.responseJSON.error + ":" + e.responseJSON.message, {
                            icon: 2
                        });
                    }
                });
            }
        });
    }
}

function saveOrUpdate(index) {
    var postUrl = vm.user.userid == null ? "/sysUser/add.do" : "/sysUser/update.do";
    $.ajax({
        // 地址格式
        url: getApiRoot() + postUrl,
        type: 'post',
        contentType: 'application/json;charset=UTF-8',
        cache: 'false',
        async: false,
        data: JSON.stringify(vm.user),
        success: function (data) {
            if (data.code == "401") {
                toLogin();
            }
            else if (data.code == "200") {
                layer.close(index);
                $('#tb_departments').bootstrapTable('refresh');
                top.layer.msg('保存成功', {
                    icon: 1,
                    time: 4000,
                    shift: 5
                });
            } else {
                top.layer.msg(data.msg, {
                    icon: 2,
                });
            }
        },
        error: function (e) {
            top.layer.alert(e.responseJSON.error + ":" + e.responseJSON.message, {
                icon: 2
            });
        }
    });
};
$modalConfirm = function (content, callBack) {
    layer.confirm(content, {
        icon: "fa-exclamation-circle",
        title: "系统提示",
        btn: ['确认', '取消'],
        btnclass: ['btn btn-primary', 'btn btn-danger'],
    }, function (index) {
        callBack(true);
        layer.close(index);
    }, function () {
        callBack(false);
    });
}

function showAlert(title, type) {
    $alert.attr('class', 'alert alert-' + type || 'success').html(
        '<i class="glyphicon glyphicon-check"></i> ' + title).show();
    setTimeout(function () {
        $alert.hide();
    }, 3000);
}